var MatHang = {

    DienThongTin : function(id, mamathang, ten, donvitinh, soluong, ghichu){
        $('#ten-mat-hang').val(ten);
        $('#don-vi-tinh').val(donvitinh);
        $('#mathang-id').val(id);
        $('#ma-mat-hang').val(mamathang);
        $('#so-luong').val(soluong);
        $('#ghi-chu').val(ghichu);
    },

    NhapMoi : function(){
        this.DienThongTin(-1, '', '', '', '', '');
        $('#button-save').prop('disabled', true);
    },

    LuuMatHang : function(overwrite){
        var TenMatHang = $('#ten-mat-hang');
        var DonViTinh = $('#don-vi-tinh');
        var SoLuong = $('#so-luong');
        if (TenMatHang.val() == ''){
            QuanLyBanHangStatic.changeMessage('Thông báo', 'Vui lòng nhập <b>Tên mặt hàng</b>');
            QuanLyBanHangStatic.showMessageBox(true, 3000);
            TenMatHang.effect('highlight', {color: '#ffd5ad'}, 600)
                .effect('highlight', {color: '#ffd5ad'}, 600);
            TenMatHang.focus();
            return;
        }
        if (DonViTinh.val() == ''){
            QuanLyBanHangStatic.changeMessage('Thông báo', 'Vui lòng nhập <b>Đơn vị tính</b>');
            QuanLyBanHangStatic.showMessageBox(true, 3000);
            DonViTinh.effect('highlight', {color: '#ffd5ad'}, 600)
                .effect('highlight', {color: '#ffd5ad'}, 600);
            DonViTinh.focus();
            return;
        }

/*        if (SoLuong.val() == ''){
            QuanLyBanHangStatic.changeMessage('Thông báo', 'Vui lòng nhập <b>Số lượng</b>');
            QuanLyBanHangStatic.showMessageBox(true, 3000);
            SoLuong.effect('highlight', {color: '#ffd5ad'}, 600)
                .effect('highlight', {color: '#ffd5ad'}, 600);
            SoLuong.focus();
            return;
        }*/

        var ID = $('#mathang-id');
        var MaMatHang = $('#ma-mat-hang');
        var GhiChu = $('#ghi-chu');


        if (overwrite == 0){
            //Lưu mới
            this.LuuMatHangVaoCSDL(MaMatHang.val(), TenMatHang.val(), DonViTinh.val(), GhiChu.val(), SoLuong.val());
        } else{
            //Lưu đè
            this.LuuMatHangVaoCSDL(MaMatHang.val(), TenMatHang.val(), DonViTinh.val(), GhiChu.val(), SoLuong.val(), ID.val());
        }
    },

    LuuMatHangVaoCSDL: function(MaMatHang, TenMatHang, DonViTinh, GhiChu, SoLuong, Node){
        //Lưu mới=======================================================================================================
        if (Node == undefined){
            var node = $('#tree').jstree('get_selected');
            if (node.length <= 0){
                QuanLyBanHangStatic.changeMessage('Thông báo', 'Vui lòng chọn thư mục để lưu mặt hàng');
                QuanLyBanHangStatic.showMessageBox(true, 2500);
                return;
            } else if (node.length == 1){

                var nodeElement = $('#' + node);
                var obj = $(nodeElement.find('.fa')[0]);

                if (obj.hasClass('tree-file')){
                    var root = $('#tree').jstree(true);
                    var parent = root.get_parent(node);
                    var newId = root.create_node(node, {text : TenMatHang, 'type' : 'default', data: {MaMatHang: MaMatHang, DonViTinh: DonViTinh, GhiChu: GhiChu, SoLuong: SoLuong}}, 'last');
                    root.get_node(newId);
                    root.edit(newId);

                } else if (obj.hasClass('tree-folder')){
                    var root = $('#tree').jstree(true);
                    var newId = root.create_node(node, {text : TenMatHang, 'type' : 'default', data: {MaMatHang: MaMatHang, DonViTinh: DonViTinh, GhiChu: GhiChu, SoLuong: SoLuong}}, 'last');
                    root.edit(newId);
                } else{
                    QuanLyBanHangStatic.changeMessage('Thông báo', 'Không thể tạo mặt hàng trong thư mục gốc');
                    QuanLyBanHangStatic.showMessageBox(true, 2500);
                    return;
                }

            } else {
                QuanLyBanHangStatic.changeMessage('Thông báo', 'Có ' + node.length + ' thư mục được chọn. <br/> Vui lòng chọn 1 thư mục để lưu');
                QuanLyBanHangStatic.showMessageBox(true, 2500);
                return;
            }

        } else{
        //Lưu đè======================================================================================================
            var node = $('#tree').jstree('get_selected');
            if (node.length <= 0){
                QuanLyBanHangStatic.changeMessage('Thông báo', 'Vui lòng chọn 1 mục bên cây thư mục để lưu');
                QuanLyBanHangStatic.showMessageBox(true, 2500);
                return;
            } else if (node.length == 1){

                var nodeElement = $('#' + node);
                var obj = $(nodeElement.find('.fa')[0]);

                if (obj.hasClass('tree-file')){
                    $('#tree').jstree('refresh');
                    $.post(QuanLyBanHangStatic.baseURL + 'MatHangTree?operation=save_info&id=' + node, { TenMatHang: TenMatHang, MaMatHang: MaMatHang, DonViTinh: DonViTinh, GhiChu: GhiChu, SoLuong: SoLuong}, function (d) {
                        QuanLyBanHangStatic.changeMessage('Thông báo', 'Đã lưu thông tin', 'fa-upload');
                        QuanLyBanHangStatic.showMessageBox(true, 2500);
                        return;
                    });
                } else if (obj.hasClass('tree-folder')){
                    var root = $('#tree').jstree(true);
                    var newId = root.create_node(node, {text : TenMatHang, 'type' : 'default', data: {MaMatHang: MaMatHang, DonViTinh: DonViTinh, GhiChu: GhiChu, SoLuong: SoLuong}}, 'last');
                    root.edit(newId);
                } else{
                    QuanLyBanHangStatic.changeMessage('Thông báo', 'Không thể tạo mặt hàng trong thư mục gốc');
                    QuanLyBanHangStatic.showMessageBox(true, 2500);
                    return;
                }


            } else {
                QuanLyBanHangStatic.changeMessage('Thông báo', 'Bạn đang chọn ' + node.length + ' mục. <br/> Vui lòng chọn 1 mục để lưu!');
                QuanLyBanHangStatic.showMessageBox(true, 2500);
                return;
            }
        }
    },

    XoaMatHang: function(obj){
        var node = $('#tree').jstree('get_selected');
        $(obj).prop('disabled', true);
        var loading = $('#button-delete-loading');
        loading.show();
        $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=delete_node&id=' + node)
            .success(function () {
                $('#tree').jstree('refresh');
                loading.hide();
            })
            .fail(function(){
                QuanLyBanHangStatic.changeMessage('Thông báo', 'Đã có lỗi xảy ra, vui lòng thử lại!');
                QuanLyBanHangStatic.showMessageBox(true, 3000);
                loading.hide();
            });
    }
};

function customMenu(node) {
    // The default set of all items
    var items = {
        createFolderItem: { // The "create" menu item
            label: "Thư mục mới",
            action: function (data) {
                var inst = $.jstree.reference(data.reference),
                    obj = inst.get_node(data.reference);
                inst.create_node(obj, { text: "Thư mục mới", type: "folder", data: {}}, "last", function (new_node) {
                    setTimeout(function () {
                        inst.edit(new_node);
                    }, 0);
                });
            }
        },
        renameItem: { // The "rename" menu item
            label: "Đổi tên",
            action: function (data) {
                var inst = $.jstree.reference(data.reference),
                    obj = inst.get_node(data.reference);
                inst.edit(obj);
            }
        }
    };

    if (node.type == 'default') {
        delete items.createFolderItem;
        delete items.renameItem;
    }

    else if (node.type == 'drive') {
        //delete items.deleteItem;
        delete items.renameItem;
    } else {
        //delete items.deleteItem;
    }

    return items;
}


$(function(){
    $('#tree')
        .jstree({
            'core' : {
                'data' : {
                    'url' : QuanLyBanHangStatic.baseURL + 'MathangTree?operation=get_node',
                    'data' : function (node) {
                        return { 'id' : node.id };
                    }
                },
                'check_callback' : true,
                'themes' : {
                    'responsive' : false
                },
                'multiple' : false
            },
            "types": {
                "drive": {
                    "icon": "fa tree-drive",
                    valid_children: ["folder"]
                },
                "default": {
                    "icon": "fa tree-file",
                    valid_children: "none"
                },
                "folder": {
                    "icon": "fa tree-folder",
                    valid_children: ["folder", "default"]
                }
            },
            'plugins' : [/*'state',*/'dnd','contextmenu', 'types', 'sort'],
            "contextmenu": {items: customMenu}
        })
        .on('delete_node.jstree', function (e, data) {
            $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=delete_node', { 'id' : data.node.id })
                .fail(function () {
                    data.instance.refresh();
                });
        })
        .on('create_node.jstree', function (e, data) {
            var json_data = {
                'id' : data.node.parent,
                'position' : data.position,
                'text' : data.node.text,
                'type': data.node.type,
                'MaMatHang' : data.node.data.MaMatHang,
                'DonViTinh' : data.node.data.DonViTinh,
                'SoLuong'   : data.node.data.SoLuong,
                'GhiChu'    : data.node.data.GhiChu
            };
            $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=create_node', json_data)
                .done(function (d) {
                    data.instance.set_id(data.node, d.id);
                })
                .fail(function () {
                    data.instance.refresh();
                });
        })
        .on('rename_node.jstree', function (e, data) {
            $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=rename_node', { 'id' : data.node.id, 'text' : data.text })
                .fail(function () {
                    data.instance.refresh();
                });
        })
        .on('move_node.jstree', function (e, data) {
            $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=move_node', { 'id' : data.node.id, 'parent' : data.parent, 'position' : data.position })
                .fail(function () {
                    data.instance.refresh();
                });
        })
        .on('copy_node.jstree', function (e, data) {
            $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=copy_node', { 'id' : data.original.id, 'parent' : data.parent, 'position' : data.position })
                .always(function () {
                    data.instance.refresh();
                });
        })
        .on('changed.jstree', function (e, data) {
            if (data.event != undefined){
                if (data.node.type == 'default'){
                    $('#button-save').prop('disabled', false);
                    $('#button-new').prop('disabled', true);
                    $('#button-delete').prop('disabled', false);
                    $.get(QuanLyBanHangStatic.baseURL + 'MathangTree?operation=get_data&id=' + data.node.id, function (data) {
                        if (data){
                            MatHang.DienThongTin(data.id, data.mamathang, data.ten, data.donvitinh, data.soluong, data.ghichu);
                        } else{
                            QuanLyBanHangStatic.changeMessage('Thông báo', 'Đã có lỗi xảy ra, vui lòng thử lại!');
                            QuanLyBanHangStatic.showMessageBox(true, 3000);
                        }
                    });
                } else if (data.node.type == 'folder'){
                    $('#button-save').prop('disabled', true);
                    $('#button-new').prop('disabled', false);
                    $('#button-delete').prop('disabled', true);
                } else{
                    $('#button-save').prop('disabled', true);
                    $('#button-new').prop('disabled', true);
                    $('#button-delete').prop('disabled', true);
                }
            }

        });

});